--Ultima Modificacion: 28/06/2010 @ 11:39 pm
--v.0.20

use master
go

create database bdopenrh
go

use bdopenrh
go

--Rol----------------------------
create table t_rol (
	id				int not null,
	descripcion		varchar (50) null
)
alter table t_rol add primary key (id)


--Usuario-------------------------
create table t_usuario (
	identificacion			varchar(50) not null,
	nombre_usuario			varchar(50) not null,
	contrasenna				varchar(max)not null,
	nombre					varchar(50) null,
	primer_apellido		    varchar(50) null,
	segundo_apellido		varchar(50) null,
	tipo_identificacion		varchar(50) null,
	genero					bit null,
	correo_electronico		varchar(50) null,
	telefono				varchar(50) null,
	fecha_nacimiento		datetime null,
	fecha_ingreso			datetime null,
	vacaciones				int default 0,
	puesto					int null,
	estado					int default 0,
	rol						int null,
	foto					varbinary(max) null,
	curriculo				varbinary(max) null,
	codigo_jefe				varchar(50) null,
	estado_curriculo		bit default 0,
	eliminado				bit default 0
)

alter table t_usuario add primary key (identificacion)
alter table t_usuario add foreign key (rol) references t_rol
--alter table t_usuario add foreign key (puesto) references t_puesto --- Se encuentra debajo de la tabla "t_puesto"


--Departamento--------------------
create table t_departamento (
	codigo			int identity not null,
	nombre			varchar(50) null,
	descripcion		varchar(255) null,
	director		varchar(50) null,
	eliminado		bit default 0 null
)

alter table t_departamento add primary key (codigo)
alter table t_departamento add foreign key (director) references t_usuario

--Nivel---------------------------
create table t_nivel (
	codigo			int identity not null,
	codigo_departamento	int not null,
	nivel			int not null,
	salario_minimo  float not null,
	salario_maximo  float not null,
	eliminado		bit default 0
)

alter table t_nivel add primary key (codigo)
alter table t_nivel add foreign key (codigo_departamento) references t_departamento

--Puesto--------------------------
create table t_puesto (
	codigo			int identity not null,
	nombre			varchar(50)not null,
	descripcion		varchar(255)not null,
	codigo_nivel	int not null,
	tipo_salario	int not null,
	salario			float not null,
	eliminado		bit default 0 null
)

alter table t_puesto add primary key(codigo)
alter table t_puesto add foreign key (codigo_nivel) references t_nivel
alter table t_usuario add foreign key (puesto) references t_puesto

--Evaluacion----------------------
create table t_evaluacion (
	codigo			varchar(50) not null,
	codigo_puesto	int not null,
	eliminado		bit default 0
)
alter table t_evaluacion add primary key (codigo)
alter table t_evaluacion add foreign key (codigo_puesto) references t_puesto

--Item Evaluacion-----------------
create table t_item_evaluacion (
	codigo			varchar(50) not null,
	codigo_puesto	varchar (50) not null,
	descripcion		varchar(50) null,
	peso			int not null,
	eliminado		bit default 0
)
alter table t_item_evaluacion add primary key (codigo)
alter table t_item_evaluacion add foreign key (codigo) references t_evaluacion



--Resultado Empleado--------------
create table t_resultado_empleado (
	codigo_item		varchar(50) not null,
	codigo_puesto	varchar(50) not null,
	codigo_empleado varchar(50) not null,
	nota			int null,
	eliminado		bit default 0
)
alter table t_resultado_empleado add primary key (codigo_item)
alter table t_resultado_empleado add foreign key (codigo_puesto) references t_item_evaluacion
alter table t_resultado_empleado add foreign key (codigo_empleado) references t_usuario

--Configuracion------------------
create table t_configuracion (
	periodo_curriculum	int not null,
	fecha_actualizacion_cv datetime not null,
	nombre_empresa		varchar(50) not null,
	periodo_bono		varchar(50) not null,
	manual_puestos		varbinary(max) null,
    ccss_patrono		float not null,
	ccss_trabajador		float not null,
	otros_patrono		float not null,
	otros_trabajador	float not null
)


--Meta---------------------------
create table t_meta (
	codigo				int identity not null,
	codigo_empleado		varchar(50) not null,
	descripcion			varchar(255) null,
	fecha_inicio		datetime not null,
	fecha_esperada		datetime not null,
	fecha_real			datetime null,
	eliminado			bit default 0
)
alter table t_meta add primary key (codigo)
alter table t_meta add foreign key (codigo_empleado) references t_usuario

--Liquidacion--------------------
create table t_liquidacion (
	codigo_empleado		varchar(50) not null,
	fecha				datetime not null,
	vacaciones			float not null,
	preaviso			float not null,
	cesantia			float not null,
	aguinaldo			float not null,
	eliminado			bit default 0
)
alter table t_liquidacion add primary key (codigo_empleado)
alter table t_liquidacion add foreign key (codigo_empleado) references t_usuario

--Permiso------------------------
create table t_permiso (
	id				int not null,
	descripcion		varchar(50) null
)
alter table t_permiso add primary key (id)

--PermisoXRol--------------------
create table t_permiso_rol (
	id_rol		int not null,
	id_permiso  int not null,
)
alter table t_permiso_rol add primary key (id_rol,id_permiso)
alter table t_permiso_rol add foreign key (id_rol) references t_rol
alter table t_permiso_rol add foreign key (id_permiso) references t_permiso

--Bonificacion-------------------
create table t_bonificacion (
	codigo_empleado		varchar(50) not null,
	bonificacion_meta	float default 0,
	bonificacion_general float default 0,
)
alter table t_bonificacion add primary key (codigo_empleado)
alter table t_bonificacion add foreign key (codigo_empleado) references t_usuario

--Historial----------------------
create table t_historial (
	codigo				varchar(50) not null,
	codigo_empleado		varchar(50) not null,
	puesto				int not null,
	fecha_inicio		datetime not null
)
alter table t_historial add primary key (codigo)
alter table t_historial add foreign key (codigo_empleado) references t_usuario
alter table t_historial add foreign key (puesto) references t_puesto

--Salario------------------------
create table t_salario (
	codigo_empleado		varchar(50) not null,
	fecha				datetime not null,
	salario_bruto		float default 0,
	salario_neto		float default 0, 
	bono_valor			float default 0
)
alter table t_salario add primary key (codigo_empleado,fecha)
alter table t_salario add foreign key (codigo_empleado) references t_usuario

--Cuentas Contables------
create table t_cuenta_contable (

	codigo_cuenta		varchar(50) not null,
	descripcion			varchar(255) not null,
	saldo				float null,
	eliminado			bit default 0
)
alter table t_cuenta_contable add primary key (codigo_cuenta)

--Movimiento--------
create table t_movimiento (

	codigo_movimiento	int identity not null,
	codigo_cuenta		varchar(50) not null,
	fecha				datetime null,
	monto				float null,
	tipo				varchar(50) null,
	eliminado			bit default 0
)

alter table t_movimiento add primary key(codigo_movimiento, codigo_cuenta)
alter table t_movimiento add foreign key (codigo_cuenta) references t_cuenta_contable


